package nextel.visita.mvc;

import com.nextel.ui.OLabel;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OTextDocument;
import com.nextel.ui.OTextField;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.OStatusIndicator;
import nextel.Configuracion;
import nextel.agps.AgpsMvcListener;
import nextel.agps.ControlAgps;
import nextel.ruta.ControlRuta;
import nextel.usuario.ControlUsuario;
import nextel.visita.ControlVisita;
import nextel.visita.bean.EstadoBean;
import nextel.visita.bean.TransaccionBean;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.MVCAction;

/**
 * 
 * @author eespinoza
 */
public class MVCEstado extends MVCAction implements AgpsMvcListener{
    
    private OTextField txtObservacion;    
    private OSoftKey cmdAtras, cmdSeguir, cmdMotivo, cmdFoto, cmdMenu;
    private boolean flagDobleClick; // para que no presione dos veces al momento de buscar
    protected OStatusIndicator indicador;
    
    protected void destroy() {
        super.destroy();
        
        ControlAgps.getInstance().finalizarLeds();
    }
    
    protected void createView() {
        
        cmdSeguir = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SEGUIR));
        cmdAtras = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATRAS));
        cmdMotivo = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_NO_VISITA));
        cmdFoto = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_FOTO));
        cmdMenu = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_PRINCIPAL));
        
        formulario.setTitle(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ESTADO), OUILook.PLAIN_SMALL_TITLE);
        
        formulario.addSoftKey(cmdSeguir);
        
        if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.motivo)){
            formulario.addSoftKey(cmdMotivo);
        }
        
        if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.foto)){
            
            if (ControlVisita.getInstance().currentEstado.flagFoto == EstadoBean.ESTADO_SI) {
                formulario.addSoftKey(cmdFoto);
            }
        }
        
        formulario.addSoftKey(cmdAtras);
        formulario.addSoftKey(cmdMenu);
        
    }
    
    protected void createItems() {
        
        if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.gps)){
            
            indicador = new OStatusIndicator(OUILook.PLAIN_SMALL_TITLE);
            indicador.setColorSenal(ControlAgps.getInstance().OPC_LED_ROJO);
            indicador.setColorTiempo(ControlAgps.getInstance().OPC_LED_ROJO);
            formulario.add(indicador);
            
            ControlAgps.getInstance().iniciarLeds(this);
        }
        
        flagDobleClick = true;
        
        StringBuffer str = new StringBuffer();
        
        str.append(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ESTADO) + ":").append(' ').append(ControlVisita.getInstance().currentEstado.nombre);
        
        formulario.add(new OLabel(str.toString(), OUILook.PLAIN_SMALL_TEXT, formulario.getWidth( )));
        //formulario.add(new OLabel("", OUILook.PLAIN_SMALL_TEXT, formulario.getWidth( )));
                
        if (ControlVisita.getInstance().currentEstado.flagInput == EstadoBean.ESTADO_SI) {
            formulario.add(new OLabel(ControlVisita.getInstance().currentEstado.etiquetaTexto, OUILook.PLAIN_SMALL_TEXT, formulario.getWidth( )));
 
            txtObservacion = new OTextField(25, OUILook.PLAIN_SMALL_TEXT, OTextField.ANY);
            txtObservacion.allowSpaces(true);
            txtObservacion.allow(OTextDocument.ALL_SPECIAL_CHARACTERS);

            formulario.add(txtObservacion);
        }
        
    }
    
    public void performAction(OSoftKey c) {
        
        if (flagDobleClick) {
            
            if (c == cmdSeguir) {
                
                if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.gps)){
                    ControlAgps.getInstance().finalizarLeds();
                }
                flagDobleClick = false;
                
                
                if (ControlVisita.getInstance().currentEstado.flagInput == EstadoBean.ESTADO_SI) {
                    ControlVisita.getInstance().currentServicio.observacion = txtObservacion.getText();
                }
                
                destroy();
                
                if (ControlVisita.getInstance().currentEstado.flagListaEntrega == EstadoBean.ESTADO_SI) {
                    ControlRuta.getInstance().setCurrent(ControlVisita.getInstance().mvcEntrega);
                } else {
                    ControlVisita.getInstance().grabarServicio();
                }
                
                
            } else if (c == cmdAtras) {
                flagDobleClick = false;
                if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.gps)){
                    
                    ControlAgps.getInstance().finalizarLeds();
                }
                destroy();
                
                
//                if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.ruta)){
                    ControlVisita.getInstance().setCurrent(ControlRuta.getInstance().mvcRutaDetalle);
//                }else{
//                    ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcMenu);
//                }
                
            } else if (c == cmdMotivo) {
                if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.gps)){
                    ControlAgps.getInstance().finalizarLeds();
                }
                flagDobleClick = false;
                
                destroy();
                
                ControlVisita.getInstance().setCurrent(ControlVisita.getInstance().mvcMotivo);
                
            } else if (c == cmdMenu) {
                if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.gps)){
                    ControlAgps.getInstance().finalizarLeds();
                }
                flagDobleClick = false;
                
                destroy();
                
                ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcMenu);
                
            }  else if (c == cmdFoto) {
                if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.gps)){
                    ControlAgps.getInstance().finalizarLeds();
                }
                flagDobleClick = false;
                try{
                    
                    if(ControlVisita.getInstance().currentServicio.numeroFoto < 3){
                        ControlVisita.getInstance().mvcFoto.showScreen();
                        destroy();
                    }else{
                        ControlVisita.getInstance().showMensaje("No se permite más de 3 fotos",formulario);
                        flagDobleClick = true;
                    }
                    
                }catch(Exception e){
                    flagDobleClick = true;
                    ControlVisita.getInstance().showMensaje("No acepta Fotos",formulario);
                }
            }
            
        }
    }
    
    public OStatusIndicator getIndicadorAGPS() {
        return indicador;
    }
    
}
